package main;

import java.io.IOException;
import java.net.ServerSocket;

import javax.swing.SwingUtilities;

import red.AtencionAlCliente;
import red.ConectionManager;

import logica.Centro_de_Mensajes;
import logica.Configuracion;

import gui.Ventana_Ppal;

public class MainCAP {
	
	private Centro_de_Mensajes centro;
	private ConectionManager   cm;
	private final int puerto_CAP = 8081;	
	
	public MainCAP(){
		Configuracion.cargar();
		centro = new Centro_de_Mensajes();
		cm = new ConectionManager();
	}

	private class InterfazGrafica implements Runnable{		
		public void run() {
			Ventana_Ppal vp = new Ventana_Ppal(centro, cm);
			vp.setVisible(true);
		}		
	}
	
	// Escucha mensajes que vienen de la Chacra
	private class Servidor implements Runnable{

		public void run() {
			boolean en_escucha = true;
			ServerSocket server_sokect = null;
			
			try {
				server_sokect = new ServerSocket(puerto_CAP);
			} 
			catch (IOException e) {
				System.err.println("Hubo un error en la conexion.");
				System.exit(1);
			} 
			
			try {			
				while(en_escucha)
					new AtencionAlCliente(server_sokect.accept(), centro, cm).start();
				
				server_sokect.close();
			
			} catch (IOException e) {
				e.printStackTrace();
			} // Fin catch
			
		} // Fin run
	} 
	
	public static void main(String[] args){
		
		MainCAP main_cap = new MainCAP();
		
		// Interfaz grafica
		SwingUtilities.invokeLater(main_cap.new InterfazGrafica());
		
		//Server
		new Thread(main_cap.new Servidor()).start();
	}

}
